|
Menüeintrag |
---|
Zeichnen → Bézierwerkzeuge → Kubische Bézierkurve 2D-Entwurf → Kubische Bézierkurve |
Arbeitsbereich |
Draft, BIM |
Standardtastenkürzel |
Keiner |
Eingeführt in Version |
0.19 |
Siehe auch |
Draft Bézierkurve, Draft BSpline, |
Der Befehl Draft KubischeBézierkurve erstellt eine Bézierkurve dritten Grades (vier Punkte erforderlich).
Die Bézierkurve ist eine der am häufigsten verwendeten Kurven für Computergrafiken. Dieser Befehl erlaubt es, einen zusammenhängenden Spline aus mehreren Bézier-Abschnitten 3. Grades zu erstellen, ähnlich dem Bézierwerkzeug in Inkscape. Eine allgemeine Bézierkurve beliebigen Grades kann mit dem Befehl Draft Bézierkurve erstellt werden.
Die Befehle Draft Bézierkurve und Draft KubischeBézierkurve verwenden Kontrollpunkte, um die Position und Krümmung der Splines festzulegen. Der Befehl Draft BSpline legt andererseits die genauen Punkte, durch die die Kurve verläuft fest.
Spline, definiert durch drei kubische Bézier-Abschnitte. Der erste Abschnitt wird durch vier Punkte definiert. Nachfolgende Abschnitte verwenden zwei Punkte aus dem vorherigen Abschnitt wieder und benötigen daher nur zwei weitere Punkte.
Siehe auch: Draft Ablage, Draft Einrasten und Draft Beschränken.
Siehe Draft Bézierkurve.
Siehe Draft Bézierkurve.
Siehe auch: Autogenerierte API-Dokumentation und Grundlagen der Skripterstellung in FreeCAD.
Siehe Draft Bézierkurve für allgemeine Informationen. Eine kubische Bézierkurve wird durch Übergabe der Option Grad=3
an makeBezCurve()
erzeugt.
Für jedes kubische Bézier-Segment müssen vier Punkte verwendet werden, von denen die beiden Extrempunkte angeben, wo der Spline durchläuft, und die beiden Zwischenpunkte Kontrollpunkte sind.
3n + 1
oder 3n
sein, wobei n
die Anzahl der Segmente ist, für n >= 1
.Beispiele für Bézierkurven, die unter Verwendung von 2, 3, 4, 5, 6, 7 und 8 Punkten erstellt wurden. Die durchgezogenen Linien stellen kubische Béziersegmente dar; die anderen Linien sind quadratisch oder linear.
Beispiel:
import FreeCAD as App
import Draft
doc = App.newDocument()
p1 = App.Vector(-3500, 0, 0)
p2 = App.Vector(-3000, 2000, 0)
p3 = App.Vector(-1100, 2000, 0)
p4 = App.Vector(0, 0, 0)
p5 = App.Vector(1500, -2000, 0)
p6 = App.Vector(3000, -1500, 0)
p7 = App.Vector(5000, 0, 0)
p8 = App.Vector(6000, 1500, 0)
rot = App.Rotation()
c1 = Draft.make_circle(100, placement=App.Placement(p1, rot), face=False)
c1.Label = "B1_E1"
c2 = Draft.make_circle(50, placement=App.Placement(p2, rot), face=True)
c2.Label = "B1_c1"
c3 = Draft.make_circle(50, placement=App.Placement(p3, rot), face=True)
c3.Label = "B1_c2"
c4 = Draft.make_circle(100, placement=App.Placement(p4, rot), face=False)
c4.Label = "B1_E2"
c5 = Draft.make_circle(50, placement=App.Placement(p5, rot), face=True)
c5.Label = "B2_c3"
c6 = Draft.make_circle(50, placement=App.Placement(p6, rot), face=True)
c6.Label = "B2_c4"
c7 = Draft.make_circle(100, placement=App.Placement(p7, rot), face=False)
c7.Label = "B2_E3"
c8 = Draft.make_circle(50, placement=App.Placement(p8, rot), face=True)
c8.Label = "B3_c5"
doc.recompute()
B1 = Draft.make_bezcurve([p1, p2], degree=3)
B1.Label = "B_lin"
B1.ViewObject.DrawStyle = "Dashed"
B2 = Draft.make_bezcurve([p1, p2, p3], degree=3)
B2.Label = "B_quad"
B2.ViewObject.DrawStyle = "Dotted"
B3 = Draft.make_bezcurve([p1, p2, p3, p4], degree=3)
B3.Label = "B_cub"
B3.ViewObject.LineWidth = 4
B4 = Draft.make_bezcurve([p1, p2, p3, p4, p5], degree=3)
B4.Label = "B_cub+lin"
B4.ViewObject.DrawStyle = "Dashed"
B5 = Draft.make_bezcurve([p1, p2, p3, p4, p5, p6], degree=3)
B5.Label = "B_cub+quad"
B5.ViewObject.DrawStyle = "Dotted"
B6 = Draft.make_bezcurve([p1, p2, p3, p4, p5, p6, p7], degree=3)
B6.Label = "B_cub+cub"
B6.ViewObject.LineWidth = 2
B7 = Draft.make_bezcurve([p1, p2, p3, p4, p5, p6, p7, p8], degree=3)
B7.Label = "B_cub+cub+lin"
B7.ViewObject.DrawStyle = "Dashed"
doc.recompute()